GlueSQL 프로젝트 구조와 필요 문법 개관

NOTE

GlueSQL(SQL 데이터베이스 엔진) 프로젝트를 읽고 기여하기 위해 알아야 하는 Rust 문법을 항목별로 정리한 시리즈의 개관 노트. 각 문법 항목은 별도 노트로 분리되어 있으며, 이 문서는 프로젝트 구조와 각 노트로의 안내 역할을 함.

📌 개념

워크스페이스(Workspace) 구성

GlueSQL은 여러 크레이트(crate)로 구성된 Cargo 워크스페이스다 (Cargo.toml).

크레이트역할
coreSQL 파싱·플래닝·실행을 담당하는 핵심 엔진 (gluesql-core)
cli커맨드라인 인터페이스
macrosRow ↔ 구조체 변환을 위한 절차적 매크로(FromGlueRow, ToGlueRow)
storages/*저장소 백엔드 구현체 (memory, sled, redis, mongo, parquet, csv, json, file, git, composite 등)
pkg/rustRust 언어 바인딩 패키지
test-suite여러 크레이트가 공유하는 테스트 유틸리티

핵심 흐름: SQL 문자열 → 파싱(AST) → 플랜(Plan) → 실행(Executor) → 저장소(Store) 접근 구조로, core가 파싱/실행 로직을, storages/*가 실제 데이터 저장을 담당하고 이 둘을 Store/StoreMut 트레잇으로 연결한다.

동기(Sync) 기반 설계

GlueSQL의 core 실행 엔진은 async/await를 사용하지 않는 동기(synchronous) 코드로 작성되어 있다. 대신 에러 전파는 ? 연산자를 통해 이루어진다 (core/src/executor/filter.rs:45-58). 저장소 크레이트 중 일부(sled 등)는 내부적으로 비동기 런타임을 쓸 수 있지만, Store/StoreMut 트레잇 자체는 동기 시그니처로 정의되어 있다.

이 시리즈의 다른 노트

GlueSQL 코드베이스를 이해하는 데 필요한 Rust 문법을 아래 노트들로 분리해 정리함.

🔗 참고

  • GlueSQL GitHub
  • (Rust) 소유권과 참조(Ownership & Borrowing) - 핵심 개념 및 특징 정리